I/O interrupts are common in many processing environments that suspend processing waiting for required I/O operations to complete. Examples of such processing environments are those that have a limited amount of real memory, and therefore, take advantage of virtual memory. Virtual memory makes it seem as if there is more real memory in a system than really exists. With virtual memory, areas of real memory that have not been recently used are paged out to storage freeing up space in real memory.
In such virtual memory-based systems, a paging mechanism is used to share real memory resources with multiple executing tasks in a system. The virtual memory space is mapped onto the real memory space and the computer hardware uses this map to resolve virtual addresses into real addresses. Real memory resources are usually over committed in such an environment and, as previously stated, inactive portions of real memory are paged out to a device (usually a disk drive). The relevant areas are then marked as invalid. When a task requests data that has an address marked invalid, a page fault occurs causing an I/O interrupt for the task and suspending execution of the task. The virtual memory contents are then retrieved from the device. When the virtual memory page is once again resident in real memory, the task can resume execution.
The retrieval operation from the disk drive requires additional disruption of usable work due to the requirement of the operating system to acknowledge the completion of the disk I/O and to mark the virtual page available. This negatively impacts system performance.